"use strict";

import Vue from 'vue';
import axios from "axios";

let config = {
  // baseURL: process.env.baseURL || process.env.apiUrl || ""   /* */
  // timeout: 60 * 1000, // Timeout
  // withCredentials: true, // Check cross-site Access-Control
  // baseURL:'http://music.eleuu.com/'
  baseURL:'http://47.115.51.185:8081/'
  // baseURL:'https://music.kele8.cn/'
};

const _axios = axios.create(config); //创建axios的实例
// 请求前的拦截器
_axios.interceptors.request.use(
  function(config) {
    // Do something before request is sent
    return config;
  },
  function(error) {
    // Do something with request error
    return Promise.reject(error);
  }
);

// 响应拦截器
_axios.interceptors.response.use(
  function(response) {
    if(response.data){
      if(response.data.result){
        return response.data.result;
      }
      return response.data;
    }
    if(response.result){
      return response.result;
    }
    
  },
  function(error) {
    // Do something with response error
    return Promise.reject(error);
  }
);
// Plugin.install 定义一个Vue的插件
Plugin.install = function(Vue) { //参数Vue构造函数
  Vue.axios = _axios; //把_axios实例挂载到Vue的构造函数上面
  window.axios = _axios;  //把_axios实例挂载到Window全局对象上
  // 往Vue的原型对象上面添加2个属性 axios $axios 在组件内部 this.$axios 或 this.axios调用axios库
  Object.defineProperties(Vue.prototype, {
    axios: { 
      get() { //往Vue实例对象上面添加一个axios属性的getter函数返回一个_axios对象.
        return _axios;
      }
    },
    $axios: {
      get() {//往Vue实例对象上面添加一个$axios属性的getter函数返回一个_axios对象.
        return _axios;
      }
    },
  });
};

Vue.use(Plugin); //Vue.use使用插件的时候会执行install函数

export default Plugin;
